// pages/cinemaDetail/cinemaDetail.js
const app = getApp();
Page({

  /**
   * 页面的初始数据
   */
  data: {
    cinemaPoster: "",  // 影院图片
    cinemaName: "",    // 影院名称
    businessTime: "",  // 营业时间
    screenNum: "",     // 屏幕数量
    cinemaAddress: "", // 影院地址
    cinemaDistance: "",// 影院距离
    flowCount: "",     // 流量统计
    startTime: "请选择开始时间",     // 开始时间
    endTime: "请选择结束时间",       // 结束时间
    planList: [],                // 已选择影院列表
    allDate: [],   // 所有的时间（按周分）
    allYear: [],
    isSelect: false,
    animationData: {},
    currentYear: "0",
    selectWeek: [],    // 已经选择的周
    timeType: "",
    nowDate: "",
    scrollTop: 0
  },

  previewFilmList:function(){
    wx.previewImage({
      current: '', // 当前显示图片的http链接
      urls: this.data.cinemaPoster // 需要预览的图片http链接列表
    })
  },

  // 动画
  maskAnimation:function(){
    // 用that取代this，防止不必要的情况发生
    var that = this;
    // 创建一个动画实例
    var animation = wx.createAnimation({
      // 动画持续时间
      duration: 500,
      // 定义动画效果
      timingFunction: 'ease'
    })
    // 将该变量赋值给当前动画
    that.animation = animation
    // 先在y轴偏移，然后用step()完成一个动画
    animation.translateY(200).step();
    // 用setData改变当前动画
    that.setData({
      // 通过export()方法导出数据
      animationData: animation.export(),
      // 改变view里面的Wx：if
      isSelect: !that.data.isSelect,
    })
    // 设置setTimeout来改变y轴偏移量，实现有感觉的滑动
    setTimeout(function () {
      animation.translateY(0).step()
      that.setData({
        animationData: animation.export()
      })
    }, 100);

    // 添加周
    var allDate = that.getDateRange(parseInt(that.data.allYear[0]));
    var allDateList = [];
    for (var i = 0; i < allDate.length; i++) {
      allDateList[i] = {
        date: allDate[i]
      }
    }
    that.setData({
      allDate: allDateList,
    });
  },


  // 开始时间
  startTime: function(e){
    this.maskAnimation();
    this.setData({
      timeType: e.currentTarget.dataset.type,
      currentYear: "0"
    });
  },


  // 结束时间
  endTime: function (e) {
    this.maskAnimation();
    this.setData({
      timeType: e.currentTarget.dataset.type,
      currentYear: "0"
    });
  },

  // 选择年
  changeYear: function (e) {
    var index = e.currentTarget.dataset.index;
    var year = parseInt(e.currentTarget.dataset.year);
    var allDate = this.getDateRange(year);
    var allDateList = [];
    for (var i = 0; i < allDate.length; i++) {
      allDateList[i] = {
        date: allDate[i]
      }
    }
    this.setData({
      allDate: allDateList,
      scrollTop: 0,
      currentYear: e.currentTarget.dataset.index
    });
  },

  // 选择周
  selectWeek: function(e){
    var currentWeek = e.currentTarget.dataset.week; // 选择的周
    var index  = e.currentTarget.dataset.index;
    var allDate = this.data.allDate;
    allDate[index].isSelect = !allDate[index].isSelect;
    this.setData({
      allDate: allDate,
    });
    
    if (this.data.timeType == "start") {
      if (this.data.endTime != "请选择结束时间"){
        var startWeek = currentWeek.split("第")[1].split("周")[0];
        var endtWeek = this.data.endTime.split("第")[1].split("周")[0];
        var startYear = currentWeek.split("-")[1].split(".")[0];
        var endYear = this.data.endTime.split("-")[1].split(".")[0];
        if (startYear > endYear){
          app.showError("开始时间不能大于结束时间");
        } else if (startYear < endYear){
          this.setData({
            startTime: currentWeek
          });
        }else{
          if (startWeek > endtWeek) {
            app.showError("开始时间不能大于结束时间");
          } else {
            this.setData({
              startTime: currentWeek
            });
          }
        }
      }else{
        this.setData({
          startTime: currentWeek
        });
      }
    } else {
      if (this.data.startTime != "请选择开始时间") {
        var startWeek = this.data.startTime.split("第")[1].split("周")[0];
        var endtWeek = currentWeek.split("第")[1].split("周")[0];
        var startYear = this.data.startTime.split("-")[1].split(".")[0];
        var endYear = currentWeek.split("-")[1].split(".")[0];
        if (startYear > endYear){
          app.showError("开始时间不能大于结束时间");
        } else if (startYear < endYear){
          this.setData({
            endTime: currentWeek
          });
        }else{
          if (startWeek > endtWeek) {
            app.showError("开始时间不能大于结束时间");
          } else {
            this.setData({
              endTime: currentWeek
            });
          }
        }
      } else {
        this.setData({
          endTime: currentWeek
        });
      }
    }
    this.hideMask();
  },

  // // 确定选择
  // sureSelect: function(){
  //   if(this.data.timeType == "start"){
  //     this.setData({
  //       startTime: this.data.selectWeek.join(",")
  //     });
  //   }else{
  //     this.setData({
  //       endTime: this.data.selectWeek.join(",")
  //     });
  //   }
  //   console.log(this.data.startTime);
  //   this.hideMask();
  // },

  // 关闭时间选择弹框
  hideMask: function(){
    var that = this;
    that.setData({
      selectWeek: []
    })
    var animation = wx.createAnimation({
      duration: 1000,
      timingFunction: 'ease'
    })
    that.animation = animation
    animation.translateY(200).step()
    that.setData({
      animationData: animation.export()
    })
    setTimeout(function () {
      animation.translateY(0).step()
      that.setData({
        animationData: animation.export(),
        isSelect: false
      })
    }, 200);
  },


  // 计算每年共有几周，每周从哪天到哪天
  getDateRange: function (year) {
    var rangeArr = [];                              // 用来保存所有周的数据
    var d = new Date(year, 0, 1);                   // 获取该年份的第一天，例：2018/1/1,里面的0代表的是1月份
    if (d.getDay() != 1) { // 如果该年份的第一天不是周一
      d.setDate(d.getDate() + (8 - d.getDay()));  //计算该年份第一周为 (当前日 + 8-该年份第一天的星期数)
    }
    var to = new Date(year + 1, 0, 1);              // 获取当前年份下一年的第一天
    var i = 1;
    var thisWeek = false;
    for (var from = d; from < to;) {                // 从该年份的第一天开始循环
      if (from < to) {
        var fromMonth = from.getMonth() + 1;        // 获取月份
        var fromDate = from.getDate();              // 获取日期
        var fromDate = "第" + i + "周 (" + year + "." + this.toTwo(fromMonth) + "." + this.toTwo(fromDate) + "-"; // 获取到该周的起始时间
        from.setDate(from.getDate() + 6);           // 该周加6天就是本周末
        var toMonth = from.getMonth() + 1;          // 获取月份(setDate会自动计算加6天以后是本月还是已经到了下个月)
        if (fromMonth === 12 && toMonth === 1) {    // 如果最后一周跨年，则toDate的year要加1
          year++
        }
        var toDate = year + "." + this.toTwo((from.getMonth() + 1)) + "." + this.toTwo(from.getDate()) + ")"; // 获取该周的周末日期
        var compareToDate = year + "/" + this.toTwo((from.getMonth() + 1)) + "/" + this.toTwo(from.getDate());
        if (new Date().getTime() < new Date(compareToDate).getTime()) {
          var range = fromDate + toDate;
          if(!thisWeek && new Date().getFullYear() === year){
            range += " 本周";
            thisWeek = true;
          }
          rangeArr.push(range)            // 将周年月日信息保存到数组
        }
        from.setDate(from.getDate() + 1);           // 从下周开始，所有日期需要加1天
      }
      i++;
    }
    return rangeArr                                 // 返回保存的周的数据
  },

  // 小于10的数字前加0
  toTwo: function(n){
    return n < 10 ? "0" + n : n;
  },
  

  // 获取影院详情
  getDetail:function(){
    wx.showLoading({
      title: '加载中',
    })
    wx.request({
      url: app.globalData.url + '/cinema/info',
      method: "POST",
      data: {
        "access_token": app.globalData.token,
        "id": app.globalData.cinemaId
      },
      success: res =>{
        if (res.data.err_code == "200"){
          if (res.data.data.cinema_info.open_time == null){
            res.data.data.cinema_info.open_time = "未知";
          }else{
            res.data.data.cinema_info.open_time = res.data.data.cinema_info.open_time;
          }
          this.setData({
            cinemaPoster: res.data.data.cinema_info.cinema_img,   // 影院图片
            cinemaName: res.data.data.cinema_info.cinema_name,    // 影院名称
            businessTime: res.data.data.cinema_info.open_time,    // 营业时间
            cinemaAddress: res.data.data.cinema_info.address,     // 影院地址
            screenNum: res.data.data.cinema_info.screen_num,      // 屏幕数量
            flowCount: res.data.data.cinema_info.flow,            // 流量统计
          });
        }
        wx.hideLoading();
      },
      fail: res =>{
        console.log(res);
        app.showError("服务器出错");
      }
    })
  },

  // 去计划页面
  goPlan: function(){
    if(this.data.startTime == "请选择开始时间"){
      app.showError("请选择开始时间");
    } else if (this.data.endTime == "请选择结束时间"){
      app.showError("请选择结束时间");
    }else{
      this.saveCinemaMsg();
      wx.switchTab({
        url: '../plan/plan',
      });
    }
  },

  // 保存影院信息
  saveCinemaMsg: function(cinemaId){
    var cinemaId = app.globalData.cinemaId;
    var cinemaName = this.data.cinemaName;
    var startTime = this.data.startTime.split("-")[0].split("(")[1];
    var endTime = this.data.endTime.split("-")[1].split(")")[0];
    var starDate = startTime.replace(/\./g, "-");
    var endDate = endTime.replace(/\./g,"-");
    var planList = this.data.planList;
    var addList = {};
    addList = { id: cinemaId, name: cinemaName, campaign_start_date: starDate, campaign_end_date: endDate}
    // 添加影院
    if (planList.length > 0){
      var isExits = planList.find(function (x) {
        return x.id == cinemaId;
      })
      if (isExits) {
        app.showError("该影院已经添加");
      } else {
        planList.push(addList);
        app.globalData.planList = planList;
        wx.setStorage({
          key: "planList",
          data: planList,
        });
      }
    }else{
      planList.push(addList);
      wx.setStorage({
        key: "planList",
        data: planList,
      });
      app.globalData.planList = planList;
    }
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.getDetail();
    var cinemaDistance = app.globalData.cinemaDistance;
    this.setData({
      cinemaDistance: cinemaDistance
    });

    //初始化年份列表
    var years = []
    for(var i=0;i<100;i++) {
      years.push(new Date().getFullYear() + i)
    }
    this.setData({
      allYear: years
    })

    // 获取storge
    wx.getStorage({
      key: 'planList',
      success: res =>{
        this.setData({
          planList: res.data
        });
      }
    });
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
  
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
  
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {
  
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
  
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
  
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
  
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {
    if (res.from === 'button') {
      // 来自页面内转发按钮
      console.log(res.target)
    }
    return {
      title: '',
      path: '/page/index/index'
    }
  }
})